package ioDemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件流
 * 文件流是建立在程序与文件之间的"管道"
 * 使用文件流可以读写文件数据
 * 文件输入流:用于读取文件数据的流
 * 文件输出流:用于向文件中写出数据的流
 */
public class FOSDemo {
    public static void main(String[] args) throws IOException {
        //需求:向文件fos.dat中写出一个字节

        /*
            文件输出流有两个常用的构造器:
            FileOutputStream(String path)
            FileOutputStream(File file)
            需要注意,文件流会自动创建不存在的文件,前提是指定的路径必须存在,否则会报错
            例如:
            FileOutputStream fos = new FileOutputStream("./abc/fos.dat");
            如果当前项目目录下没有abc目录,上述构造器执行时会报错!
         */
        FileOutputStream fos = new FileOutputStream("./fos.dat");

//        File file = new File("./fos.dat");
//        FileOutputStream fos = new FileOutputStream(file);

        /*
            文件输出流继承自字节输出流的超类:java.io.OutputStream
            在超类中规定了输出流都必须具有的写出字节的方法,其中
            void write(int d)
            通过流写出一个字节,写出的是给定的int值对应2进制的"低8位"

            int 4个字节
            1字节   1byte对应8位2进制
            00000000-11111111

            4个字节32位2进制
            00000000 00000000 00000000 00000000

            当写出一个字节时,仅写出最低的8位2进制
            00000000 00000000 00000000 00000000
                                       ^^^^^^^^
         */

        //fos.txt内容:00000001
        fos.write(-1);
        //fos.txt内容:00000001 00000010
        fos.write(2);
        System.out.println("写出完毕");
        //流用完了应当关闭,释放底层资源
        fos.close();

    }
}










